// miniprogram/pages/scan.js

// 获取App对象(全局对象)
var app = getApp();

Page({

  /**
   * 页面的初始数据
   */
  data: {
    type: null,
    take: false,
    success: null,
  },

  takePhoto() {
    let take = this.data.take;
    // 防止连续点击判断，在识别中时，take为true，不能继续点击
    if(take){
      return;
    }

    this.setData({  // 点击一次时，设为true
      take: true
    })

    wx.showToast({
      title: '识别中...',
      icon: 'loading',
      duration: 4500
    })

    // 获取扫邮次数是否用完的 success 和 msg
    wx.cloud.callFunction({
      name: 'getYou',
      success: (res) => {
        console.log('getYou1', res);
        let success = res.result.success;
        let msg = res.result.msg;
        this.setData({
          success: success
        });
        if (!success) {  // 返回的success为false 代表当天扫邮次数用完
          wx.showToast({
            title: msg,
            icon: 'none',
            duration: 2000
          });
          this.setData({  // 再次开启扫一扫按钮
            take: false
          })
          return;
        }
      }
    });
    
    // 1. 拍下一张照片
    this.getPhoto().then((path) => {
      return this.readFile(path)
      // 2. 将照片转为base64
    }).then((base64) => {
      // 3. 提交腾讯云
      console.log('base64', base64);
      return this.txApi(base64);
    }).then((res) => {
      // 4. 判断结果
      console.log('判断结果', res);
      let items = res.data.data.items;
      // 判断是否有邮字
      let hasYou = items.some((item) => {
        return item.itemstring.indexOf('邮') > -1;
      });
      console.log('hasYou', hasYou);

      /***调式云函数,测试完后必须删掉***/
      // hasYou = true;
      /***调式云函数***/

      let success = this.data.success;  
      // 判断是否有邮字 并且 当天的扫邮次数是否用完
      if (hasYou && success) {  
        // 创建记录
        wx.cloud.callFunction({  // 异步操作
          name: 'getYou',
          success: (res) => { // 云函数成功返回结果
            console.log('getYou', res);
            this.setData({
              type: res.result.type
            })
            // 跳转到邮卡页面
            wx.redirectTo({
              url: `../scan_res/scan_res?type=${this.data.type}`,
            })
          }
        });
      } else if(!hasYou && success) {
        wx.showToast({
          title: '很遗憾，请再扫一次!',
          icon: 'none',
          duration: 1500
        });
        // 识别失败时，设为false，再次打开点击功能
        this.setData({  
          take: false
        })
      }
    })
  },
  // 1.拍照
  getPhoto() {
    return new Promise((reslove, reject) => {
      const ctx = wx.createCameraContext()
      ctx.takePhoto({
        quality: 'high',
        success: (res) => {
          // 返回图片的临时路径
          reslove(res.tempImagePath);
        },
        fail: (err) => {
          reject(err);
        }
      })
    })
  },
  // 2.转base64
  readFile(path) {
    return new Promise((reslove, reject) => {
      // 获取文件系统管理器对象
      const fs = wx.getFileSystemManager();
      fs.readFile({
        filePath: path,
        encoding: 'base64',
        success: (res) => {
          console.log('path结果', res);
          reslove(res.data);
        },
        fail: (err) => {
          reject(err);
        }
      })
    })
  },
  // 3.提交腾讯云
  txApi(base64) {
    return new Promise((reslove, reject) => {
      wx.request({
        url: 'https://recognition.image.myqcloud.com/ocr/general',
        header: {
          'host': 'recognition.image.myqcloud.com',
          'content-type': 'application/json',
          'authorization': app.globalData.sign
        },
        data: {
          appid: '1258450021',
          image: base64
        },
        method: 'POST',
        success: (res) => {
          reslove(res);
        },
        fail: (err) => {
          reject(err);
        }
      })
    })
  },

  // 跳转到mycard页面
  toMycard() {
    wx.redirectTo({
      url: '../mycard/mycard',
    })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function(options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function() {

  }
})